﻿using System;
using GalaSoft.MvvmLight.Messaging;

namespace Songhay.Mvvm.Models
{
    /// <summary>
    /// Defines the conventional MVVM Light Notification Message.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class LightNotificationMessageAction<T> : NotificationMessageAction<T>, ILightMessage
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="LightNavigationMessage&lt;T&gt;"/> class.
        /// </summary>
        /// <param name="notification">The notification.</param>
        /// <param name="callback">The callback.</param>
        public LightNotificationMessageAction(string notification, Action<T> callback)
            : base(notification, callback)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="LightNavigationMessage&lt;T&gt;"/> class.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="notification">The notification.</param>
        /// <param name="callback">The callback.</param>
        public LightNotificationMessageAction(object sender, string notification, Action<T> callback)
            : base(sender, notification, callback)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="LightNavigationMessage&lt;T&gt;"/> class.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="target">The target.</param>
        /// <param name="notification">The notification.</param>
        /// <param name="callback">The callback.</param>
        public LightNotificationMessageAction(object sender, object target, string notification, Action<T> callback)
            : base(sender, target, notification, callback)
        {
        }

        #region ILightMessage Members

        /// <summary>
        /// Gets or sets the source.
        /// </summary>
        /// <value>
        /// The source.
        /// </value>
        public LightMessageSource Source { get; set; }

        /// <summary>
        /// Gets or sets the unique id.
        /// </summary>
        /// <value>
        /// The unique id.
        /// </value>
        public string UniqueId { get; set; }

        #endregion
    }
}
